// Copyright 2008 Senary
// See credits.txt for details.

// This file is part of Omega VII.

// Omega VII is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Omega VII is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Omega VII.  If not, see <http://www.gnu.org/licenses/>.

#include <windows.h> //required by adll.h

#include "sdk_engine/adll.h"

class Vector;
class SpaceObject;

// Creates an explosion at the given position
void explode(Vector const& pos);

// Starts a smoking effect for the given entity (if it's not on yet)
void smokeEffect(ENTITY* entity);

// stops the smoke effect for the entity if it's running
void offSmokeEffect(ENTITY* entity);

// Effect for when an entity receives damage
void receiveDamage(Vector const& pos);

// Firing laser effect
void openFire(SpaceObject const* so);

//methi firing effect
void methiFire(SpaceObject const* so);

//trail effect
void trail(SpaceObject const* so);

// Private functions
// -----------------

// Helper functions for the explosion effect
void explosionEvent(PARTICLE* p);
void explodeParticle(PARTICLE* p);
void animateExplosion2(ENTITY* e);
void animateExplosion(ENTITY* e);

// Helper functions for the smoke effect
void smoke_effect(PARTICLE* p);
void smoke_fade(PARTICLE* p);
void generateSmoke(ENTITY* e);

// Helper functions for the receive damage effect
void shotParticle(PARTICLE* p);
void recDmgEvent(PARTICLE* p);

// Helper functions for the open fire effect
void fireParticles(PARTICLE* p);
void fireFade(PARTICLE* p);

// Helper functions for the trail effect
void trailParticles(PARTICLE* p);
void trailFade(PARTICLE* p);